\contentsline {chapter}{\numberline {1}Introduction}{6}{chapter.1}
\contentsline {section}{\numberline {1.1}Preliminaries}{6}{section.1.1}
\contentsline {section}{\numberline {1.2}String Search Algorithms}{6}{section.1.2}
\contentsline {subsection}{\numberline {1.2.1}Brute Force algorithm (Naive search)}{7}{subsection.1.2.1}
\contentsline {subsection}{\numberline {1.2.2}Boyer-Moore algorithm}{7}{subsection.1.2.2}
\contentsline {subsection}{\numberline {1.2.3}Knuth-Morris-Pratt algorithm (KMP)}{8}{subsection.1.2.3}
\contentsline {section}{\numberline {1.3}Research}{8}{section.1.3}
\contentsline {subsection}{\numberline {1.3.1}Animations as a teaching tool}{8}{subsection.1.3.1}
\contentsline {subsection}{\numberline {1.3.2}Similar applications}{9}{subsection.1.3.2}
\contentsline {section}{\numberline {1.4}Project Plan}{10}{section.1.4}
\contentsline {chapter}{\numberline {2}Design}{13}{chapter.2}
\contentsline {section}{\numberline {2.1}Functional requirements}{13}{section.2.1}
\contentsline {section}{\numberline {2.2}Non-functional requirements}{14}{section.2.2}
\contentsline {section}{\numberline {2.3}System Scope}{15}{section.2.3}
\contentsline {section}{\numberline {2.4}System Actors}{16}{section.2.4}
\contentsline {section}{\numberline {2.5}Use Cases}{16}{section.2.5}
\contentsline {section}{\numberline {2.6}System Design}{19}{section.2.6}
\contentsline {section}{\numberline {2.7}Interface Design}{21}{section.2.7}
\contentsline {chapter}{\numberline {3}Implementation}{26}{chapter.3}
\contentsline {section}{\numberline {3.1}Overview}{26}{section.3.1}
\contentsline {section}{\numberline {3.2}User Interface}{26}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Psuedo Code Frame}{27}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Animation Controls Frame}{27}{subsection.3.2.2}
\contentsline {subsection}{\numberline {3.2.3}String Box}{27}{subsection.3.2.3}
\contentsline {subsection}{\numberline {3.2.4}String Box Display}{28}{subsection.3.2.4}
\contentsline {subsection}{\numberline {3.2.5}Full String Box Display}{29}{subsection.3.2.5}
\contentsline {subsection}{\numberline {3.2.6}Pre Processing Frame}{29}{subsection.3.2.6}
\contentsline {section}{\numberline {3.3}Algorithms and Animation States}{29}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Animation State}{29}{subsection.3.3.1}
\contentsline {subsection}{\numberline {3.3.2}Algorithms}{30}{subsection.3.3.2}
\contentsline {section}{\numberline {3.4}Development}{32}{section.3.4}
\contentsline {section}{\numberline {3.5}Technologies used}{32}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}The Java programming language}{32}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}The Java Swing GUI widget toolkit}{33}{subsection.3.5.2}
\contentsline {subsection}{\numberline {3.5.3}Eclipse and NetBeans}{33}{subsection.3.5.3}
\contentsline {subsection}{\numberline {3.5.4}the Subversion version control tool for Eclipse}{33}{subsection.3.5.4}
\contentsline {chapter}{\numberline {4}Evaluation}{35}{chapter.4}
\contentsline {section}{\numberline {4.1}Testing}{35}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}Unit Testing}{35}{subsection.4.1.1}
\contentsline {subsection}{\numberline {4.1.2}Integration testing}{36}{subsection.4.1.2}
\contentsline {subsection}{\numberline {4.1.3}System Testing}{36}{subsection.4.1.3}
\contentsline {section}{\numberline {4.2}Design Evaluation}{36}{section.4.2}
\contentsline {subsection}{\numberline {4.2.1}Visibility of system status}{36}{subsection.4.2.1}
\contentsline {subsection}{\numberline {4.2.2}Match between system and the real world}{37}{subsection.4.2.2}
\contentsline {subsection}{\numberline {4.2.3}User control and freedom}{37}{subsection.4.2.3}
\contentsline {subsection}{\numberline {4.2.4}Consistency and standards}{37}{subsection.4.2.4}
\contentsline {subsection}{\numberline {4.2.5}Error prevention}{38}{subsection.4.2.5}
\contentsline {subsection}{\numberline {4.2.6}Recognition rather than recall}{38}{subsection.4.2.6}
\contentsline {subsection}{\numberline {4.2.7}Flexibility and efficiency of use}{38}{subsection.4.2.7}
\contentsline {subsection}{\numberline {4.2.8}Aesthetic and minimalist design}{38}{subsection.4.2.8}
\contentsline {subsection}{\numberline {4.2.9}Help users recognize, diagnose, and recover from errors}{39}{subsection.4.2.9}
\contentsline {subsection}{\numberline {4.2.10}Help and documentation}{39}{subsection.4.2.10}
\contentsline {section}{\numberline {4.3}User Evaluation}{39}{section.4.3}
\contentsline {subsection}{\numberline {4.3.1}DECIDE Framework}{40}{subsection.4.3.1}
\contentsline {subsection}{\numberline {4.3.2}Paraphrased Questionnaire Answers.}{44}{subsection.4.3.2}
\contentsline {subsection}{\numberline {4.3.3}Evaluation of User Testing Responses}{46}{subsection.4.3.3}
\contentsline {section}{\numberline {4.4}Improvements/Future Developments}{46}{section.4.4}
\contentsline {subsection}{\numberline {4.4.1}Pre-User Testing}{46}{subsection.4.4.1}
\contentsline {subsubsection}{Further Development}{47}{section*.5}
\contentsline {subsection}{\numberline {4.4.2}Post-User Testing}{47}{subsection.4.4.2}
\contentsline {subsubsection}{Immediate Changes}{47}{section*.6}
\contentsline {subsubsection}{Additional Future Developments}{48}{section*.7}
\contentsline {chapter}{\numberline {5}Conclusion}{49}{chapter.5}
\contentsline {section}{\numberline {5.1}Contributions}{49}{section.5.1}
